package exception;
/**
 * 异常处理机制
 * try{
 *     代码片段
 * }catch(XXXException e){
 *     try中代码出现XXXException后的处理代码
 * }
 */
public class TryCatch {
    public static void main(String[] args) {
        System.out.println("程序开始了");
        try {
            //   String s = null;
//            String s = "a";
            String s = "aaaa";
            System.out.println(s.length());
            System.out.println(s.charAt(1));
            System.out.println(Integer.parseInt(s));
            //try中出现异常后的代码均不会被执行
            System.out.println("!11111111111");

//        }catch (NullPointerException e){
//            System.out.println("出现了空指针，并解决了");
//            //catch可以定义多个，针对不同的异常有不同的处理方式时可以分别捕获并处理
//        }catch (StringIndexOutOfBoundsException e){
//            System.out.println("出现了数组越界，并解决了");
//        }
            //jdk7之后可以合并到一个catch中用相同的处理方式处理多个异常
        }catch (NullPointerException | StringIndexOutOfBoundsException e){//子类在上
            System.out.println("出现了空指针或下表越界异常，并处理了");
      //如果捕获了一个超类型异常，那么凡是出现他的任意子类型异常时都可以被其处理
        }catch (Exception e){//超类在下
            System.out.println("出现了其他异常，并处理了");
        }


        System.out.println("程序结束了");
    }
}
